package com.zzgele.qmzb.api.core;

import org.apache.ibatis.exceptions.TooManyResultsException;
import tk.mybatis.mapper.entity.Condition;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Service 层 基础接口，其他Service 接口 请继承该接口
 */
public interface Service<T> {
    int save(T model);//添加持久化
    int save(List<T> models);//批量添加持久化
    int deleteById(Integer id);//通过主鍵刪除
    int deleteByIds(String ids);//批量刪除 eg：ids -> “1,2,3,4”
    int update(T model);//更新
    T findById(Integer id);//通过ID查找
    T findBy(String fieldName, Object value) throws TooManyResultsException; //通过Model中某个成员变量名称（非数据表中column的名称）查找,value需符合unique约束
    List<T> findByIds(String ids);//通过多个ID查找//eg：ids -> “1,2,3,4”
    List<T> findByCondition(Condition condition);//根据条件查找
    List<T> findAll();//获取所有

    //追加常用方法
    int deleteByCondition(Condition condition);//根据条件删除
    int selectCount(T model); //根据实体中的属性查询总数
    int selectCountByCondition(Condition condition); //根据条件进行查询总数

    //追加Long支持
    int deleteById(Long id);//通过主鍵刪除
    T findById(Long id);//通过ID查找

    //获取列表 add by martin@20170711
    List<HashMap> getList(Map<String, Object> map);
    //更新某字段 add by martin@201707
    int setInc(Map<String, Object> map);
    int UpdatePrivate(Map<String, Object> map);
    int UpdateBroadcast(Map<String, Object> map);
    int setDec(Map<String, Object> map);

    //获取首页-关注列表 add by lcb@20170908
    List<HashMap> getIndexFollowList(Map<String, Object> map);

    //榜单-粉丝榜 add by lcb@20170908
    List<HashMap> getFansRankList();

    //榜单-土豪榜 add by lcb@20170908
    List<HashMap> getLocalTyrantRankList();

    //更新某字段 add by lcb@20170909
    int setSpe(Map<String, Object> map);
    int setTtd(Map<String, Object> map);
    int setTic(Map<String, Object> map);

    //充值记录 add by lcb@20170911
    List<HashMap> getRechargeLogList(Map<String, Object> map);
    //直播间-粉丝贡献榜
    List<HashMap> getContributionRankList(Map<String, Object> map);
    //本月收入民票
    String  getMonthTotalTicket(Map<String, Object> map);
    //获取列表 add by jack
    List<HashMap> getForFamilyList(Map<String, Object> map);
    int getListSize(Map<String, Object> map);
//
}
